#!/bin/bash
set -e  # 出错时终止脚本

# 定义要测试的模型和消融实验配置（每个元素为完整参数列表）
declare -a experiments=(
    # 基础模型
    "--model simple_cnn"
    "--model lenet5"
    "--model multi_scale_cnn --use_branch1 true --use_branch2 true --use_branch3 true"
    # MultiScaleCNN消融实验
    "--model multi_scale_cnn --use_branch1 false --use_branch2 true --use_branch3 true"
    "--model multi_scale_cnn --use_branch1 true --use_branch2 false --use_branch3 true"
    "--model multi_scale_cnn --use_branch1 true --use_branch2 true --use_branch3 false"
)

# 临时结果目录
TEST_RESULT_DIR="test_results_temp"
mkdir -p $TEST_RESULT_DIR

echo "===== 开始批量测试（共${#experiments[@]}个任务） ====="

# 循环执行所有实验
for idx in "${!experiments[@]}"; do
    exp_config="${experiments[$idx]}"
    exp_name="test_${idx}_$(echo "$exp_config" | tr ' ' '_' | tr '-' '_')"  # 生成唯一名称
    echo -e "\n===== 执行任务 $((idx+1))/${#experiments[@]}: $exp_config ====="

    # 运行测试（直接传递完整参数列表，包含--model）
    RUN_ENV=local python experiments/test_train_mnist.py \
        $exp_config \
        --output_dir "$TEST_RESULT_DIR/$exp_name"

    echo "任务 $((idx+1)) 完成，结果暂存于 $TEST_RESULT_DIR/$exp_name"
done

echo -e "\n===== 所有测试任务执行完毕 ====="

# 清理临时结果
read -p "是否保留测试结果？(y/N) " keep_results
if [[ "$keep_results" != "y" && "$keep_results" != "Y" ]]; then
    rm -rf $TEST_RESULT_DIR
    echo "已删除临时测试结果"
else
    echo "测试结果保留在：$(pwd)/$TEST_RESULT_DIR"
fi